package com.intretech.umsin.common.utils;

import org.mapstruct.MappingTarget;

import java.util.List;

/**
 * @version V1.0
 * @ClassName: BaseConverter
 * @Description: BaseConverter 源(S) 转 目标(T) 实体对象的相互转换器接口 （基于mapstruct的对象转换实现）
 * @author: 李启联
 * @date: 2022-04-15 16:29
 * @Copyright: Copyright (c) 2022
 */
public interface BaseConverter<S, T> {


    /**
     * 源(S) 转 目标(T)
     */
    T convertToTarget(S source);

    /**
     * 目标(T) 反转 源(S)
     */
    S reverseFromTarget(T target);

    /**
     * 源(S)集合 转 目标(T)集合
     */
    List<T> convertToTarget(List<S> sourceList);

    /**
     * 目标集合(E) 反转 源集合(S)
     */
    List<S> reverseFromTarget(List<T> targetList);


    /**
     * 目标(转换后的对象) 更新 源
     */
    void updateSourceFromTarget(T target, @MappingTarget S source);

}
